#include <mylib/app/menu.h>

// 创建菜单
void menu_create(menu_t* menu, oled_t* oled, menu_evnet_handler_func_t event_getter,
                 menu_evnet_handler_func_t evnet_handler)
{
    menu->oled = oled;
}

// 添加菜单项到菜单
void menu_add_option(menu_t* menu, menu_option_t* option)
{

}

// 删除菜单项通过index
void menu_remove_option_by_index(menu_t* menu, uint8_t index) {}

// 删除菜单项通过name
void menu_remove_option_by_name(menu_t* menu, char* name) {}

// 开始运行菜单
void menu_start(menu_t* menu)
{


    while (1) {
        // 1. 获取菜单事件
        menu_event_t event = {
            .type = menu_event_type_none,
            .data = NULL
        };
        menu->event_getter(&event);
        // 2. 调用菜单事件处理函数
        menu->evnet_handler(&event);
        // 绘制菜单
        //menu_draw(menu);
        // 刷新屏幕
        //oled_refresh(menu->oled);
    }
}
void menu_event_getter(menu_event_t* event) {}
void menu_event_handler(menu_event_t* event) {}
void menu_test()
{
    // 菜单的使用方法，demo
    oled_t g_oled;
    menu_t g_menu;
    // 1. 初始化oled（在此之前需要做好oled的硬件初始化）
    oled_init(&g_oled);
    // 2. 初始化菜单，即给菜单绑定oled对象、事件获取函数、事件处理函数
    menu_create(&g_menu, &g_oled, menu_event_getter, menu_event_handler);
    // 3. 添加菜单项
    menu_option_t option1 = {.name = "option1"};
    menu_option_t option2 = {.name = "option2"};
    menu_option_t option3 = {.name = "option2"};
    menu_add_option(&g_menu, &option1);
    menu_add_option(&g_menu, &option2);
    menu_add_option(&g_menu, &option3);
    // 4. 开始运行菜单
    menu_start(&g_menu);
}